Before proceeding with a description of the background art, a brief review of terminology to be used throughout the following description is appropriate.
In an object oriented programming environment, such as Visual C++, the term “object” is used to refer to a computer software component comprising data structures, and procedures (often referred to as methods) for manipulating the data structures. Objects can communicate with one another by sending messages using some form of communications protocol. The procedures of a particular object can be activated by a message sent from another object, where the interior structure of each object is entirely hidden from any other object (a property referred to as encapsulation). Each object can have one or more associated interfaces, which specify the communication between two objects. For example, each object can have its own private variables and if a procedure contained within a specific object does not refer to non-local variables then the interface of the object is defined by a parameter list contained within the object. Variables of an object store information but do not define how that information is processed.
Objects are derived from a template or type of object, and the collection of objects that are derived from a particular template are said to form a class. Each object in a class is referred to as an ‘instance’ of that class. A class definition defines the attributes (i.e. properties) of the objects within a particular class. Generally, the objects within a class are ordered in a hierarchical manner such that an object has a parent object (i.e. super-class) at the next higher level in the hierarchy and one or more child objects (i.e. sub-class) at the next lower level. An object is generally mapped to a parent object or a child object by means of a mapping table, often referred to as a sibling table, which is associated with the object.
As described above, each object can have various attributes associated with the object. Attributes can be local to that object, or can be inherited from the parent object. Inheritance is the term given to the manner in which characteristics of objects can be replicated and instantiated in other objects. Attributes of an object can also be inherited from a child object often without limit on the number of inheritances. The object from which all of the objects within the class are derived is referred to as the base class object.
Inheritance is both static by abstract data type and dynamic by instantiation and value. Inheritance rules define that which can be inherited and inheritance links define the parent and child of inheritance attributes.
Generally, an object has a permanent connection with a parent application program. However, some objects (e.g. embedded objects) have no permanent connection with a parent application. In this case, when the object is activated the parent application is generally launched. For example, a button object on a graphical user interface, when activated might cause a certain application program to execute in order to perform some function.
Graphical user interfaces are typically used to present information to an end user in a visually pleasing manner and to allow the user to interact with a corresponding application program, for example, using a pointing device or a keyboard. In particular, with the advent of the Internet, many users have become accustomed to simply providing an Internet browser software application, executing on a client computer, hereinafter referred to as a “client”, with an application program reference. The browser software application retrieves information, according to the reference, which is then returned to the client for display as a combination of text, graphics and images.
For the end user, the quality of presentation of information can be an important aspect in choosing a product to purchase or use. This has been well recognised by information technology companies, resulting in the emergence of several software tools for assisting the construction of such graphical interfaces. Some of these tools include processes, which allows a graphical user interface-generating program to execute within browser software on a client. Such tools also allow for the provision of dynamically created content to the user. A further advantage of such software tools is that the client needs only to be configured with a standard web browser, for example, without needing installation or configuration of specialised software for an application being executed on a remote server computer hereinafter referred to as a “server”. A still further advantage of such software tools is that a heterogeneous network of clients can be used, where the clients differ in operating systems, central processing units and further, hardware and software configurations. The graphical information can be dynamically generated on such clients requiring a much lower bandwidth than would otherwise be needed if pixel information was directly transmitted to the client from a server.
In addition, since a client does not retain prior knowledge of an application being executed on a remote server, applications can be more easily up-gradable, since such applications need only be updated at the corresponding server. For example, a graphical user interface can be changed completely, without requiring any cooperation from the clients. The ability to easily customise and modify a graphical user interface over time can be an important feature of a product, especially in response to feedback and requests from end users.
Whilst a computer system which allows a graphical user interface generating program to execute on a client is an extremely powerful and useful tool, such a tool can present many limitations and restrictions to a user due to security restrictions which are associated with the graphical user interface. These security restrictions are necessary due to the nature of the Internet, which would otherwise easily permit both unwanted access and destruction of personal data. An additional disadvantage of such a system is that a program executing on a client is therefore not under the direct control of a server.
In addition, in order to graphically display changes in the state of a graphical user interface presented by a server, corresponding client software typically has to periodically poll the server for changes. Such polling often results in the fetching of a newly updated application program as a replacement to an existing one, and execution of this new application program. Polling introduces an extra element of complexity in the writing of such an application program in that the program must be configured to execute the action of polling the server. Additionally, the need to execute a new program introduces inefficiency and slow response time particularly where only small updates are required to a graphical user interface being displayed on a graphical display.
In order to overcome the limitations of conventional client/server computer systems discussed above, software tools have been developed to allow a program to execute on a server in response to a request from a client. Such a program, upon completing the request originating from the client, responds to the client with the requested information embedded within a graphical description included within the response, perhaps even embedding a program for the client to execute. Software tools that allow a program to execute on a server, in response to a request from a client, permit dynamic graphical content generation as well as server data access and manipulation. However, such tools are configured to work over the Internet, which inherently presents unpredictable delays in network traffic, and is driven by client requests rather than server initiative.
Thus, a need clearly exists for an improved method of displaying visual effects on a client, which would otherwise require both significant software and processing power on the part of the client.